import advList from '$V/advList'
import{
    isLoginRequest

} from '../api/admin'
import{
  addAdvRequest,
  advListRequest,
  deleteAdvRequest,
  getUpdateDataRequest,
  updateAdvRequest
} from '../api/adv'

//封装一个获取所有广告的函数
const getAllAdvLsit = async (res,pageNo = 1, everyNum = 3) => {
  let findResult = null
  try {
    findResult = await advListRequest(pageNo,everyNum)
  } catch (e) {
    alert('查询出现异常' + e.message)
    //权限异常
    if (!e.isLogin) {
      return router.go("/login");
    }
  }
  //重新渲染
  res.render(advList({
    advList: findResult.findResult,
    pageCount:findResult.pageCount
  }))

}


export default async (req,res)=>{

    //路由切换的时候验证登录
    try {
      await isLoginRequest();
    } catch (e) {
      //请求异常后提示用户
      alert("有异常" + e.message)

      //判断是否是权限异常
      if (!e.isLogin) {
        return router.go("/login");
      }
    }


    getAllAdvLsit(res)

    //添加广告逻辑
    document.onclick = async function (e) {
      if (e.target.id === 'adv-save') {
        //收集表单数据
        const myForm = new FormData(document.advForm);
        //如果里面数据有一个空的则不会提交
        if (!myForm.get('advTitle') || !myForm.get("advType") || !myForm.get("advOrder") || !myForm.get("advPic")) {
          return alert("添加的内容不能有空的！！！！")
        }
        //如果没有问题就发送请求
        try {
          await addAdvRequest(myForm)
          alert('成功广告添加')
          //关闭窗口
          document.getElementById('addClose').click()
          //清空列表
          document.advForm.reset()
        } catch (e) {
          alert("添加广告异常" + e.message)
          //判断是否是权限异常
          if (!e.isLogin) {
            return router.go("/login");
          }
        }

        getAllAdvLsit(res)
      }
      //删除广告逻辑
      if (e.target.nodeName === "BUTTON" && e.target.classList.contains('btn-delete')) {
        const _id = e.target.dataset.id
        try {
          await deleteAdvRequest(_id)
          alert("删除数据成功")

          getAllAdvLsit(res)
        } catch (e) {
          alert("删除数据失败" + e.message)
          //判断权限
          if (!e.isLogin) {
            //关闭添加广告的弹窗再跳转
            document.getElementById("addClose").click();
            return router.go("/login");
          }
        }
      }
      //点击更新按钮弹窗获取数据的逻辑
      if(e.target.nodeName === 'BUTTON'&&e.target.classList.contains('btn-update')){
        const _id = e.target.dataset.id;
        try{  
          const updateData =await getUpdateDataRequest(_id)
          //将后端传过来的数据渲染到匡中
          document.updateForm.advTitle.value = updateData.advTitle;
          document.updateForm.advType.value = updateData.advType;
          document.updateForm.advOrder.value = updateData.advOrder;

          // //给当前弹窗的更新按钮上添加一个自定义属性 保存当前数据的id  方便以后提交
          document.getElementById('adv-update').dataset.id = updateData._id;
        }catch(e){
          alert("更新查询失败" + e.message)
        }
      }
      //点击跟新修改数据，添加跟新时间
      if(e.target.id==='adv-update'){
        //通过上面添加的一个自定义属性 保存的id，来让更新按钮自带一个_id
        const _id = e.target.dataset.id
        //收取表单数据 使用FormData
        const myForm = new FormData(document.updateForm);
        //判断三个值都不能是空
        if (!myForm.get("advTitle") || !myForm.get("advType") || !myForm.get("advOrder") || !myForm.get("advPic")) {
          return alert("添加的内容不能有空的！！！！")
        }
        //发送请求
        try{
          await updateAdvRequest(myForm,_id)
          console.log(myForm);
          console.log('跟新成功');

          getAllAdvLsit(res)
          //关闭蒙版
          document.getElementById("updateClose").click();
          document.querySelector('.modal-backdrop').style.display = "none";

        }catch(e){
          alert("更新广告异常" + e.message);
          //判断是否是权限异常
          if (!e.isLogin) {
            //关闭添加广告的弹窗再跳转
            document.getElementById("updateClose").click();
            return router.go("/login");
          }
        }


      }
      //点击页码
      if(e.target.nodeName === "SPAN" && e.target.parentNode.id === "page"){
        const pageNo = +e.target.dataset.pageno;
        getAllAdvLsit(res,pageNo)
      }
    }

    //图片预览环节
    document.onchange = function (e) {
      if (e.target.id === 'advPic') {
        //实例化对象
        const reader = new FileReader()
        //拿到图片对象的第一个属性
        reader.readAsDataURL(e.target.files[0])
        //得到一个 onload事件
        reader.onload = function (e) {
          //获取展示的位置
          const oPreImg = document.getElementById('preImg');
          //添加属性
          oPreImg.src = e.target.result;
          //设置显示
          oPreImg.style.display = "block"
        }
      }
    }
}